<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // ES5中每个函数内部都有arguments对象(内置对象)，是一个伪数组，包含参数的实参
        // arguments对象无需声明(无需定义),可以直接使用
        // arguments表示的是当前函数被调用的时候，接收的所有参数(实参)列表
        function calc(a,b,c){
            console.log(arguments);//表示的是函数的实参，不是形参
            console.log(arguments[0]);
            // arguments.push("aaaa");//报错，arguments对象并不是数组，不能调用数组中的方法
            
        }
        calc(10,20,30);
        // calc(299,30,40,59,565,45);
        // calc();
        function calcSum(){
            var sum=0;
            for(var i=0;i<arguments.length;i++){
                sum+=arguments[i];
            }
            return sum;
        }
        console.log(calcSum(100,200,300,400,500,600));
        console.log(calcSum(1,2,3,4,5,6,7,8,9,10,11,12,13));


        //callee在函数内部使用，代表当前函数引用，一般可用于函数内部调用函数本身(递归)
        function calc2(n){
            if(n<=1){
                return 1;
            }
            // return calc2(n-1)*n;
            return arguments.callee(n-1)*n;
        }
        // console.log(calc2(1));
        // console.log(calc2(2));
        console.log(calc2(3));
    </script>
</head>
<body>
    
</body>
</html>